package com.nep.entity.supervisor;

import java.io.Serializable;

/**
 * 用户实体类，用于存储和管理系统用户的基本信息
 * 实现Serializable接口支持对象序列化
 */
public class User implements Serializable {
    private String phone;         // 电话号码作为唯一标识
    private String password;      // 用户密码
    private String realName;      // 用户真实姓名
    private String age;           // 用户年龄
    private String gender;        // 用户性别
    private String gridAddress;   // 负责的网格地址（可选）

    // 默认构造函数
    public User() {}

    // Getters and Setters
    public String getPhone() {
        return phone;
    }

    public void setPhone(String phone) {
        this.phone = phone;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }

    public String getRealName() {
        return realName;
    }

    public void setRealName(String realName) {
        this.realName = realName;
    }

    public String getAge() {
        return age;
    }

    public void setAge(String age) {
        this.age = age;
    }

    public String getGender() {
        return gender;
    }

    public void setGender(String gender) {
        this.gender = gender;
    }

    public String getGridAddress() {
        return gridAddress;
    }

    public void setGridAddress(String gridAddress) {
        this.gridAddress = gridAddress;
    }

    /**
     * 将用户对象序列化为CSV格式字符串
     * 格式: phone,password,realName,age,gender,[gridAddress]
     * @return CSV格式字符串
     */
    @Override
    public String toString() {
        return String.join(",",
                phone,
                password,
                realName,
                age,
                gender,
                gridAddress == null ? "" : gridAddress);
    }

    /**
     * 从CSV格式字符串反序列化为User对象
     * 格式: phone,password,realName,age,gender,[gridAddress]
     * @param line CSV格式字符串
     * @return 解析后的User对象，无效格式返回null
     */
    public static User fromString(String line) {
        // 处理空行情况
        if (line == null || line.trim().isEmpty()) {
            return null;
        }

        // 分割CSV字段
        String[] parts = line.split(",");

        // 验证基本字段数量
        if (parts.length < 5) {
            System.err.println("无效的用户数据格式: " + line);
            return null;
        }

        User user = new User();
        user.setPhone(parts[0]);             // 电话号码（必需）
        user.setPassword(parts[1]);          // 密码（必需）
        user.setRealName(parts[2]);          // 真实姓名（必需）
        user.setAge(parts[3]);               // 年龄（必需）
        user.setGender(parts[4]);            // 性别（必需）

        // 处理可选的网格地址字段
        if (parts.length > 5 && !parts[5].isEmpty()) {
            user.setGridAddress(parts[5]);   // 网格地址（可选）
        }

        return user;
    }
}